package cn.iocoder.yudao.module.member.assets.dal.dataobject;

import cn.hutool.core.util.NumberUtil;
import cn.iocoder.yudao.framework.business.basic.pojo.po.MemberScopeEntity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.math.BigDecimal;

/**
 * 数字资产 DO
 *
 * @author 山野羡民
 */
@TableName("member_digital_assets")
//@KeySequence("member_digital_assets_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库，可不写。
@Data
@NoArgsConstructor
public class MemberDigitalAssetsDO extends MemberScopeEntity {
    /**
     * 当前经验，用于计算普通用户的等级
     */
    private Integer experience;
    /**
     * 累计获得的经验
     */
    private Integer experienceGet;
    /**
     * 当前成长值/贡献值，用于计算普通会员的等级
     */
    private Integer growth;
    /**
     * 累计获得的贡献值
     */
    private Integer growthGet;
    /**
     * 当前积分，用于消费抵扣
     */
    private Integer point;
    /**
     * 累计获得的积分
     */
    private Integer pointGet;
    /**
     * 当前营业收益，通过售卖产品或提供服务获得
     */
    private Double revenue;
    /**
     * 累计获得的营业收益
     */
    private Double revenueGet;
    /**
     * 当前佣金，通过推广赚取
     */
    private Double commission;
    /**
     * 累计获得的佣金
     */
    private Double commissionGet;
    /**
     * 当前红包，用于消费抵扣
     */
    private Double redPacket;
    /**
     * 累计获得的红包
     */
    private Double redPacketGet;
    /**
     * 当前联盟豆（含收益豆），用于抵扣、兑换产品、兑换现金
     */
    private Double cryptocurrency;
    /**
     * 未增值的联盟豆
     */
    private Double cryptocurrencyOrigin;
    /**
     * 收益豆
     */
    @TableField(exist = false)
    private Double cryptocurrencyIncrement;

    @SuppressWarnings("unused")
    public double getCryptocurrencyIncrement() {
        return NumberUtil.sub(new Number[]{getCryptocurrency(), getCryptocurrencyOrigin()}).doubleValue();
    }

    /**
     * 增值中的联盟豆
     */
    private Double cryptocurrencyIncreasing;
    /**
     * 冻结中的联盟豆
     */
    private Double cryptocurrencyFreezing;

    /**
     * 累计获得的联盟豆
     */
    private Double cryptocurrencyGet;
    /**
     * 当前信用值
     */
    private Double credit;
    /**
     *累计获得的信用值
     */
    private Double creditGet;
    /**
     * 当前股权/公益勋章/持股量/股份/种子资产，用于增长股权、增长利息
     */
    private Double shareholding;
    /**
     * 累计获得的持股量
     */
    private Double shareholdingGet;
    /**
     * 当前勋章，持股量相当于公益勋章，股权增长相当于公益勋章增值
     */
    @TableField(exist = false)
    private Double medal;

    @SuppressWarnings("unused")
    public Double getMedal() {
        return getShareholding();
    }

    /**
     * 当前分红，用于兑换现金
     */
    private Double bonus;
    /**
     * 累计获得的分红
     */
    private Double bonusGet;
    /**
     * 当前消费金/利息，用于兑换现金
     */
    private Double interest;
    /**
     * 累计获得的消费金
     */
    private Double interestGet;

    /**
     * 当前手续金，用于充当手续费
     */
    private BigDecimal handlingFee;

    /**
     * 累计获得的手续金
     */
    private BigDecimal handlingFeeGet;

}